package com.ruoyi.system.domain;

import java.math.BigDecimal;
import java.util.Date;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat;

/**
 * 志愿申请对象 application
 *
 * @author ltr
 * @date 2024-10-23
 */
public class Application extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 申请ID */
    private Long applicationId;

    /** 学生ID（关联student_info） */
    @Excel(name = "学生ID")
    private Long studentId;

    /** 题目ID（关联topic） */
    @Excel(name = "题目ID")
    private Long topicId;

    /** 志愿优先级（1=第一志愿，2=第二志愿） */
    @Excel(name = "志愿优先级")
    private Integer priority;

    /** 申请状态（待审核/已录取/已拒绝/已取消/已失效） */
    @Excel(name = "申请状态")
    private String status;

    /** 申请理由 */
    private String applyReason;

    /** 审核结果（录取/拒绝） */
    private String reviewResult;

    /** 审核意见（拒绝理由） */
    private String reviewReason;

    /** 审核时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date reviewTime;

    /** 审核人 */
    private String reviewBy;

    /** 学生姓名（关联查询，不存数据库） */
    @Excel(name = "学生姓名")
    private String studentName;

    /** 学号（关联查询，不存数据库） */
    @Excel(name = "学号")
    private String studentNo;

    /** 年级（关联查询，不存数据库） - 新增 */
    private String grade;

    /** 专业（关联查询，不存数据库） */
    private String major;

    /** 班级（关联查询，不存数据库） */
    private String className;

    /** 绩点（关联查询，不存数据库） */
    private BigDecimal gpa;

    /** 邮箱（关联查询，不存数据库） */
    private String email;

    /** 技术栈（关联查询，不存数据库） */
    private String techStack;

    /** 个人简介（关联查询，不存数据库） - 新增 */
    private String personalIntro;

    /** 题目名称（关联查询，不存数据库） */
    @Excel(name = "题目名称")
    private String topicTitle;

    /** 教师ID（关联查询，不存数据库） */
    private Long teacherId;

    /** 教师姓名（关联查询，不存数据库） */
    @Excel(name = "教师姓名")
    private String teacherName;

    /** 教师工号（关联查询，不存数据库） */
    private String teacherNo;

    public void setApplicationId(Long applicationId)
    {
        this.applicationId = applicationId;
    }

    public Long getApplicationId()
    {
        return applicationId;
    }

    public void setStudentId(Long studentId)
    {
        this.studentId = studentId;
    }

    public Long getStudentId()
    {
        return studentId;
    }

    public void setTopicId(Long topicId)
    {
        this.topicId = topicId;
    }

    public Long getTopicId()
    {
        return topicId;
    }

    public void setPriority(Integer priority)
    {
        this.priority = priority;
    }

    public Integer getPriority()
    {
        return priority;
    }

    public void setStatus(String status)
    {
        this.status = status;
    }

    public String getStatus()
    {
        return status;
    }

    public void setApplyReason(String applyReason)
    {
        this.applyReason = applyReason;
    }

    public String getApplyReason()
    {
        return applyReason;
    }

    public void setReviewResult(String reviewResult)
    {
        this.reviewResult = reviewResult;
    }

    public String getReviewResult()
    {
        return reviewResult;
    }

    public void setReviewReason(String reviewReason)
    {
        this.reviewReason = reviewReason;
    }

    public String getReviewReason()
    {
        return reviewReason;
    }

    public void setReviewTime(Date reviewTime)
    {
        this.reviewTime = reviewTime;
    }

    public Date getReviewTime()
    {
        return reviewTime;
    }

    public void setReviewBy(String reviewBy)
    {
        this.reviewBy = reviewBy;
    }

    public String getReviewBy()
    {
        return reviewBy;
    }

    public String getStudentName()
    {
        return studentName;
    }

    public void setStudentName(String studentName)
    {
        this.studentName = studentName;
    }

    public String getStudentNo()
    {
        return studentNo;
    }

    public void setStudentNo(String studentNo)
    {
        this.studentNo = studentNo;
    }

    public String getGrade()
    {
        return grade;
    }

    public void setGrade(String grade)
    {
        this.grade = grade;
    }

    public String getMajor()
    {
        return major;
    }

    public void setMajor(String major)
    {
        this.major = major;
    }

    public String getClassName()
    {
        return className;
    }

    public void setClassName(String className)
    {
        this.className = className;
    }

    public BigDecimal getGpa()
    {
        return gpa;
    }

    public void setGpa(BigDecimal gpa)
    {
        this.gpa = gpa;
    }

    public String getEmail()
    {
        return email;
    }

    public void setEmail(String email)
    {
        this.email = email;
    }

    public String getTechStack()
    {
        return techStack;
    }

    public void setTechStack(String techStack)
    {
        this.techStack = techStack;
    }

    public String getPersonalIntro()
    {
        return personalIntro;
    }

    public void setPersonalIntro(String personalIntro)
    {
        this.personalIntro = personalIntro;
    }

    public String getTopicTitle()
    {
        return topicTitle;
    }

    public void setTopicTitle(String topicTitle)
    {
        this.topicTitle = topicTitle;
    }

    public Long getTeacherId()
    {
        return teacherId;
    }

    public void setTeacherId(Long teacherId)
    {
        this.teacherId = teacherId;
    }

    public String getTeacherName()
    {
        return teacherName;
    }

    public void setTeacherName(String teacherName)
    {
        this.teacherName = teacherName;
    }

    public String getTeacherNo()
    {
        return teacherNo;
    }

    public void setTeacherNo(String teacherNo)
    {
        this.teacherNo = teacherNo;
    }

    @Override
    public String toString()
    {
        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
                .append("applicationId", getApplicationId())
                .append("studentId", getStudentId())
                .append("topicId", getTopicId())
                .append("priority", getPriority())
                .append("status", getStatus())
                .append("applyReason", getApplyReason())
                .append("reviewResult", getReviewResult())
                .append("reviewReason", getReviewReason())
                .append("reviewTime", getReviewTime())
                .append("reviewBy", getReviewBy())
                .append("createTime", getCreateTime())
                .append("updateTime", getUpdateTime())
                .append("createBy", getCreateBy())
                .append("updateBy", getUpdateBy())
                .append("remark", getRemark())
                .toString();
    }
}